/**
 * 
 */
package idv.takeshi.software.productline.bookstore.domain.model.book;

import java.util.Set;

import org.apache.commons.lang.Validate;

/**
 * A repository for Author.
 * @author takeshi
 *
 */
public interface AuthorRepository {
	
	/**
	 * Add an author.
	 * @param author
	 * @throws AuthorDuplicateException
	 */
	public void add(Author author) throws AuthorDuplicateException;
	
	/**
	 * Add authors.
	 * @param authors
	 * @throws AuthorDuplicateException
	 */
	public void add(Set<Author> authors) throws AuthorDuplicateException;
	
	/**
	 * Get an author by id.
	 * @param id
	 * @return
	 */
	public Author getById(Long id);
	
	/**
	 * Get all authors.
	 * @return
	 */
	public Set<Author> getAll();
	
	/**
	 * Remove an author.
	 * @param author
	 */
	public void remove(Author author);

	/**
	 * Update an author.
	 * @param author
	 */
	public void update(Author author);
	
	

}
